Computer systems issue speculative queries to reduce average access latency by attempting to guess whether an access to a specific data item will actually be necessary. If the guess is correct, the data will be available earlier, thereby reducing latency. An incorrect guess, however, may tie up valuable computer system resources and may increase latency if a demand access, e.g., a non-speculative access, must wait for an incorrect guess to be flushed from the system. The challenge of minimizing access latency grows more difficult as computer memory systems continue to become more complex. For example, conventional computer memory systems may include multiple levels of memory hierarchy, multiple cores on a singe die, and multiple dies linked together to form large multi-node or multi-blade systems. In view of these complex memory systems, providing a coherent memory space becomes more important in order to minimize the overhead of software-based operating systems, for example.
Accordingly, there is a need in the art for proper weighting between demand and speculative data fetches to minimize access latency and maximize performance of a computer system.